1. Technical Field
The present invention relates generally to database programs implemented on computer systems. Specifically, the present invention utilizes a transaction log related to a database to calculate values that are useful when performing a storage analysis of the database.
2. Description of the Related Art
Large electronic databases have become common-place items on many of today""s large computer systems. These electronic databases, and the database management programs which manipulate and make accessible the data in the database, allow vast amounts of information to be stored in an orderly, easily retrievable manner. Most large corporations heavily rely on the information contained in these electronic databases.
Maintaining these databases is important to ensure their proper operation. Various utilities have been developed to arrange the data items in the database to increase the speed at which they can be retrieved and to decrease the amount of space occupied by the database.
Information relating to how the data in the database is stored must be gathered before any maintenance procedures can be initiated. Traditionally, this data was gathered by simply accessing the database. However, this method has a number of disadvantages. The most important drawback to gathering storage information in this manner is that while the storage information is being gathered from the database, users are unable to modify the database. For a large database, the time required to access the database can be several minutes, and locking users out of the database for this amount of time can be unacceptable.
However, other sources of information about the database often exist in the form of transaction logs. Many database management programs maintain a record of the changes that are made to the database in structures known as transaction logs. The information describing the changes made to a database is often known as transaction log data. This log data can be kept in files or other virtual storage devices. Because all of the changes made to a database over a certain period of time are recorded in a transaction log, these transaction logs can be accessed to retrieve a variety of information about the database without having to access the database itself.
Although transaction logs contain data which can be very useful, tools which make use of this data are few in number. Thus, a method which utilizes transaction log data to extract storage information about the database itself would be useful. Such a method would examine the transaction log data and compute values for the database such as the block count, the number of rows, the average length of a row, the number of chained and unchained rows, and so on. Obtaining this information should minimize access to the database itself, and, instead, should utilize the transaction log for the database.
Therefore, it is one object of the present invention to obtain storage information for the database while minimizing access to the database itself.
It is yet another object of the present invention to utilize the information in the transaction log to compute these statistics.
It is still another object of the present invention to continually update the statistics by monitoring the information added to the transaction log.
When characterized as a method, the present invention achieves these and other objects as follows. Initially, a table in the database is baselined. The baselining function is usually built into the database system program which manages the database itself. This baselining procedure generates storage information like the number of rows in the table, the average length of a row, the number of chained/migrated rows, and the average free space per page in the table. This storage information is transferred to a monitoring routine via a transaction log. The monitoring routine accepts the storage information for the table. Next, the monitoring routine monitors the transaction log for entries which alter the storage information initially passed to it. At some point, an entity may wish to know the current storage information for the table. When this occurs, a message is passed to the monitoring routine, and the monitoring routine transfers the storage information to the requesting entity, without accessing the database. The above as well as additional objectives, features, and advantages of the present invention will become apparent in the following detailed written description.